FastAPI-তে Response Status Codes কনফিগার করা খুবই সহজ এবং শক্তিশালী। HTTP স্ট্যাটাস কোডগুলো রেসপন্সের অবস্থা এবং সফলতা বা ব্যর্থতা নির্দেশ করে। FastAPI তে আপনি স্ট্যাটাস কোড কাস্টমাইজ করতে পারেন এবং বিভিন্ন রকমের HTTP রেসপন্স পাঠাতে পারেন, যেমন 200 (OK), 201 (Created), 404 (Not Found), 400 (Bad Request), 500 (Internal Server Error) ইত্যাদি।
FastAPI-তে HTTP স্ট্যাটাস কোড কাস্টমাইজেশন স্বয়ংক্রিয়ভাবে বা ম্যানুয়ালি করা যায়।
Step 1: Default Status Code ব্যবহারের উদাহরণ
FastAPI তে, সাধারণত 200 OK স্ট্যাটাস কোড ডিফল্ট হিসেবে ব্যবহৃত হয়, যদি আপনি অন্য স্ট্যাটাস কোড নির্দিষ্ট না করেন।
উদাহরণ: Default Status Code (200 OK)
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, FastAPI"}
এখানে, GET রিকোয়েস্টের জন্য 200 OK ডিফল্ট স্ট্যাটাস কোড ব্যবহার করা হবে।
রেসপন্স:
{
"message": "Hello, FastAPI"
}
স্ট্যাটাস কোড: 200 OK (ডিফল্ট)
Step 2: Custom Status Code কনফিগার করা
FastAPI তে আপনি কাস্টম স্ট্যাটাস কোড ব্যবহার করতে পারেন, যেমন 201 (Created), 404 (Not Found), 400 (Bad Request) ইত্যাদি। status_code প্যারামিটার ব্যবহার করে আপনি কাস্টম স্ট্যাটাস কোড নির্ধারণ করতে পারেন।
উদাহরণ: Custom Status Code (201 Created)
from fastapi import FastAPI
from fastapi import status
app = FastAPI()
@app.post("/items/", status_code=status.HTTP_201_CREATED)
def create_item(name: str):
return {"message": f"Item '{name}' created successfully!"}
এখানে, POST রিকোয়েস্টের জন্য 201 Created স্ট্যাটাস কোড নির্ধারণ করা হয়েছে।
রিকোয়েস্ট:
POST /items/
Body:
{
"name": "Laptop"
}
রেসপন্স:
{
"message": "Item 'Laptop' created successfully!"
}
স্ট্যাটাস কোড: 201 Created
Step 3: HTTPException এবং কাস্টম স্ট্যাটাস কোড
FastAPI তে HTTPException ব্যবহার করে আপনি কাস্টম স্ট্যাটাস কোড এবং ত্রুটি মেসেজ পাঠাতে পারেন। এইভাবে আপনি 404 Not Found, 400 Bad Request ইত্যাদি কাস্টম স্ট্যাটাস কোড পাঠাতে পারেন।
উদাহরণ: HTTPException ব্যবহার করে কাস্টম স্ট্যাটাস কোড
from fastapi import FastAPI, HTTPException
from fastapi import status
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int):
if item_id != 1:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=f"Item with id {item_id} not found"
)
return {"item_id": item_id, "name": "Laptop"}
এখানে, item_id যদি 1 না হয়, তবে 404 Not Found স্ট্যাটাস কোড দিয়ে কাস্টম ত্রুটি মেসেজ পাঠানো হবে।
রিকোয়েস্ট:
GET /items/2
রেসপন্স:
{
"detail": "Item with id 2 not found"
}
স্ট্যাটাস কোড: 404 Not Found
Step 4: Response Status Code সহ JSON Response ফেরত দেওয়া
FastAPI তে JSONResponse ব্যবহার করে আপনি কাস্টম স্ট্যাটাস কোড সহ JSON রেসপন্স ফেরত দিতে পারেন। এটি আপনাকে রেসপন্সের স্ট্যাটাস কোড, কনটেন্ট টাইপ, এবং অন্যান্য হেডার কাস্টমাইজ করার সুবিধা দেয়।
উদাহরণ: JSONResponse ব্যবহার করে কাস্টম স্ট্যাটাস কোড
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from fastapi import status
app = FastAPI()
@app.get("/custom_response/")
def custom_response():
content = {"message": "This is a custom response with status code 418"}
return JSONResponse(content=content, status_code=status.HTTP_418_IM_A_TEAPOT)
এখানে, 418 I'm a teapot স্ট্যাটাস কোড ব্যবহার করা হয়েছে, যা একটি হাস্যরসাত্মক HTTP স্ট্যাটাস কোড। এটি RFC 2324 এর অংশ এবং বাস্তব জগতের API-তে ব্যবহৃত হয় না, তবে এটি প্রদর্শন করতে এখানে ব্যবহার করা হয়েছে।
রেসপন্স:
{
"message": "This is a custom response with status code 418"
}
স্ট্যাটাস কোড: 418 I'm a teapot
Step 5: Redirecting with Status Codes
FastAPI তে আপনি কাস্টম রিডাইরেক্ট স্ট্যাটাস কোড সহ রিডাইরেক্ট করতে পারেন, যেমন 301 Moved Permanently বা 302 Found।
উদাহরণ: Redirecting with 301 Moved Permanently
from fastapi import FastAPI
from fastapi.responses import RedirectResponse
from fastapi import status
app = FastAPI()
@app.get("/old-url/")
def redirect_to_new_url():
return RedirectResponse(url="/new-url/", status_code=status.HTTP_301_MOVED_PERMANENTLY)
এখানে, /old-url/ রিকোয়েস্ট পাঠালে এটি 301 Moved Permanently স্ট্যাটাস কোড সহ /new-url/ রিডাইরেক্ট করবে।
রেসপন্স:
301 Moved Permanently
URL: /new-url/
Step 6: Response Status Code with Response Object
FastAPI তে Response ক্লাস ব্যবহার করে আপনি কাস্টম স্ট্যাটাস কোড এবং কনটেন্ট টাইপ সহ রেসপন্স ফেরত দিতে পারেন। এটি আরও শক্তিশালী এবং যেকোনো কাস্টম হেডার এবং কনটেন্ট টাইপ সহজেই কাস্টমাইজ করতে সহায়ক।
উদাহরণ: Response Object ব্যবহার
from fastapi import FastAPI
from fastapi.responses import Response
from fastapi import status
app = FastAPI()
@app.get("/text-response/")
def text_response():
return Response(content="Custom Text Response", status_code=status.HTTP_200_OK, media_type="text/plain")
এখানে, রেসপন্সের কনটেন্ট টাইপ text/plain হিসেবে সেট করা হয়েছে এবং 200 OK স্ট্যাটাস কোড ফেরত দেওয়া হয়েছে।
রেসপন্স:
Custom Text Response
স্ট্যাটাস কোড: 200 OK
FastAPI তে Response Status Codes কাস্টমাইজ করা অত্যন্ত সহজ এবং অত্যন্ত কার্যকর। আপনি সহজেই 200 OK, 201 Created, 400 Bad Request, 404 Not Found ইত্যাদি স্ট্যাটাস কোড ব্যবহার করতে পারেন, এবং HTTPException, JSONResponse, Response ব্যবহার করে কাস্টম স্ট্যাটাস কোড সহ রেসপন্স পাঠাতে পারেন। এটি API-এর আচরণ এবং ত্রুটি হ্যান্ডলিংকে আরও নমনীয় এবং কার্যকর করে তোলে।
Read more